ssh key 还原操作

在 Windows 系统上的恢复操作

问题背景

在Windows系统中,SSH key的权限设置不当可能会导致SSH连接失败。通常会收到类似"Permissions for 'private_key' are too open"的错误提示。

解决步骤

1. 创建.ssh目录

如果.ssh目录不存在,首先需要创建:

mkdir $env:USERPROFILE\.ssh

2. 设置.ssh目录权限

确保.ssh目录具有正确的权限:

icacls $env:USERPROFILE\.ssh /inheritance:r
icacls $env:USERPROFILE\.ssh /grant:r $env:USERNAME`:F

3. 修改SSH密钥权限

私钥文件权限设置

对于私钥文件(通常是id_rsa或id_ed25519),执行以下命令:

icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r
icacls $env:USERPROFILE\.ssh\id_ed25519 /grant:r $env:USERNAME`:F
公钥文件权限设置

对于公钥文件(通常是id_rsa.pub或id_ed25519.pub),可以设置为只读权限:

icacls $env:USERPROFILE\.ssh\id_ed25519.pub /inheritance:r
icacls $env:USERPROFILE\.ssh\id_ed25519.pub /grant:r $env:USERNAME`:R

注意事项

验证方法

修改完成后,可以通过以下命令测试SSH连接:

ssh -T git@github.com

如果看到类似"Hi username! You've successfully authenticated..."的消息,说明权限已经正确设置。

在 Linux 系统上的恢复操作

在 Linux 系统上将 SSH 密钥从其他电脑同步到当前电脑上,操作步骤如下:

步骤 1: 复制 SSH 密钥文件

首先,确保你已经拥有旧电脑上的 SSH 密钥文件,并将其传输到新电脑上。SSH 密钥一般存储在 ~/.ssh/ 目录下,主要包括以下几个文件:

可以使用任何文件传输工具(如 scp, rsync 或 USB 驱动器)将这些文件传输到新电脑。

使用 scp 传输 SSH 密钥

假设你的旧电脑 IP 地址是 192.168.1.100,用户名是 user,你可以运行以下命令将文件从旧电脑复制到新电脑:

scp user@192.168.1.100:/home/user/.ssh/id_rsa* ~/.ssh/

这条命令会将 id_rsaid_rsa.pub 文件从旧电脑复制到新电脑的 ~/.ssh/ 目录中。

步骤 2: 设置权限

将 SSH 密钥文件复制到新电脑后,需要确保它们的权限设置正确。运行以下命令来确保私钥和公钥的权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

这样可以确保文件的访问权限符合 SSH 的安全要求。

将本地的 ssh key 复制到远程服务器

cat ~/.ssh/id_ed25519.pub | ssh username@your-vps-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"